package com.example.demo3annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


@Target({ElementType.METHOD, ElementType.FIELD}) // 表示注解的作用目标为方法 , 成员变量
@Retention(RetentionPolicy.RUNTIME) // 表示注解的保留策略: 编译器运行时(一直活着)
public @interface MyTest1 {
}

/**
 * @Target: 作用：声明被修饰的注解只能在哪些位置使用
 * TYPE，类，接口
 * FIELD, 成员变量
 * METHOD, 成员方法
 * PARAMETER, 方法参数
 * CONSTRUCTOR, 构造器
 * LOCAL_VARIABLE, 局部变量
 */

/**
 * @Retention(RetentionPolicy.RUNTIME) 作用：声明注解的保留周期
 * 1. SOURCE
 * 只作用在源码阶段，字节码文件中不存在。
 * 2. CLASS（默认值）
 * 保留到字节码文件阶段，运行阶段不存在.
 * 3. RUNTIME（开发常用）
 * 一直保留到运行阶段
 */